<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="../vue.js"></script>
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <!-- 3.在vm的模板中使用组件 -->
      <p>vm实例的模板</p>
      <App></App>
      <Son></Son>
    </div>
    <script>
      // 组件1
      const App = Vue.extend({
        name: 'App', //给组件命名
        data() {
          return { num: 0 };
        },
        // 组件的模板
        template: `<div>我是App组件{{num}}</div>`,

        mounted() {
          console.log(this); //指向组件的实例化对象
          console.log(this.__proto__); //指向Vuecomponent组件的原型，
          console.log(this.__proto__.__proto__); //指向Vue的原型，因为组件是Vue.extend继承Vue生成的
          console.log(this.__proto__.__proto__.__proto__); //指向object.prototype
          console.log(this.__proto__.__proto__.__proto__.__proto__); //null
        },
      });

      // 组件2
      const Son = Vue.extend({
        name: 'Son', //给组件命名
        data() {
          return { num: 11 };
        },
        // 组件的模板
        template: `<div>我是Son组件{{num}}</div>`,
      });

      const vm = new Vue({
        el: '#app',
        data() {
          return {};
        },
        // 2.实例vm注册组件
        components: {
          App: App,
          Son: Son,
        },
      });
    </script>
  </body>
</html>
